
package Control;

import Database.ConexaoDB;
import Model.Cidade;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

public class Control_Cidade {
    
    Connection con = new ConexaoDB().conectar();
    PreparedStatement pstm;
    ResultSet rs;
    
    String cadastraCidade = "INSERT INTO CIDADE(CIDADE_ID, CIDADE_DESCRICAO) VALUES(0,?)";
    
    String alteraCidade = "UPDATE CIDADE SET CIDADE_DESCRICAO=? WHERE CIDADE_ID=?";
     
    String excluiCidade = "DELETE FROM CIDADE WHERE CIDADE_ID=?";
    
    String consultaCidadeCodigo = "SELECT * FROM CIDADE WHERE CIDADE_ID LIKE ?";
    
    String consultaCidadeNome = "SELECT * FROM CIDADE WHERE CIDADE_DESCRICAO LIKE ?";
    
    String consultaCidadeTodosNome = "SELECT * FROM CIDADE ORDER BY CIDADE_DESCRICAO";
    
    String consultaCidadeTodosCodigo = "SELECT * FROM CIDADE ORDER BY CIDADE_ID";
    
      
    ConexaoDB BD = new ConexaoDB();
    
    
    public Control_Cidade(){ }                                
    
    public void cadastrarCidade(Cidade cidade){
         try{
            pstm = BD.conectar().prepareStatement(cadastraCidade);
            pstm.setString(1, cidade.getCidade_descricao());
            pstm.executeUpdate();
            BD.desconectar(con);
         }
         catch(Exception e){
               e.printStackTrace();   
            }
    }
    
    public void alterarCidade(Cidade cidade){
         try{
            pstm = BD.conectar().prepareStatement(alteraCidade);
            pstm.setString(1, cidade.getCidade_descricao());
            pstm.setInt(2, cidade.getCidade_id());
            pstm.executeUpdate();
            BD.desconectar(con);
         }
         catch(Exception e){
               e.printStackTrace();   
            }
    }
    
    public void excluirCidade(Cidade cidade){
         try{
            pstm = BD.conectar().prepareStatement(excluiCidade);
            pstm.setInt(1, cidade.getCidade_id());
            pstm.executeUpdate();
            BD.desconectar(con);
         }
         catch(Exception e){
               e.printStackTrace();   
            }
    }
    
    public java.util.List<Cidade> listarCidadeCodigo(String codigo){
        java.util.List<Cidade> cidade = new ArrayList();
        try{
            pstm = BD.conectar().prepareStatement(consultaCidadeCodigo);
            pstm.setString(1, codigo);
            rs = pstm.executeQuery();
            
            while (rs.next()){
                Cidade cid = new Cidade();
                cid.setCidade_id(rs.getInt("cidade_id"));
                cid.setCidade_descricao(rs.getString("cidade_descricao"));
                cidade.add(cid);
            }
            BD.desconectar(con);
        } catch(Exception e){
            e.printStackTrace();
        }
        return cidade;
    }
    
    public java.util.List<Cidade> listarCidadeNome(String nome){
        java.util.List<Cidade> cidade = new ArrayList();
        try{
            pstm = BD.conectar().prepareStatement(consultaCidadeNome);
            pstm.setString(1, nome);
            rs = pstm.executeQuery();
            
            while (rs.next()){
                Cidade cid = new Cidade();
                cid.setCidade_id(rs.getInt("cidade_id"));
                cid.setCidade_descricao(rs.getString("cidade_descricao"));
                cidade.add(cid);
            }
            BD.desconectar(con);
        } catch(Exception e){
            e.printStackTrace();
        }
        return cidade;
    }
    
    public java.util.List<Cidade> listarCidadeTodosNome(){
        java.util.List<Cidade> cidade = new ArrayList();
        try{
            pstm = BD.conectar().prepareStatement(consultaCidadeTodosNome);
            rs = pstm.executeQuery();
            
            while (rs.next()){
                Cidade cid = new Cidade();
                cid.setCidade_id(rs.getInt("cidade_id"));
                cid.setCidade_descricao(rs.getString("cidade_descricao"));
                cidade.add(cid);
            }
            BD.desconectar(con);
        } catch(Exception e){
            e.printStackTrace();
        }
        return cidade;
    }
    
    public java.util.List<Cidade> listarCidadeTodosCodigo(){
        java.util.List<Cidade> cidade = new ArrayList();
        try{
            pstm = BD.conectar().prepareStatement(consultaCidadeTodosCodigo);
            rs = pstm.executeQuery();
            
            while (rs.next()){
                Cidade cid = new Cidade();
                cid.setCidade_id(rs.getInt("cidade_id"));
                cid.setCidade_descricao(rs.getString("cidade_descricao"));
                cidade.add(cid);
            }
            BD.desconectar(con);
        } catch(Exception e){
            e.printStackTrace();
        }
        return cidade;
    }
    
}
